changed to use whichever is more convenient.
Signed-off-by: Keir Fraser <keir@xensource.com>
/* Remove previously mapped page if it was present. */
if (prev_mfn && mfn_valid(prev_mfn)) {
- if (is_xen_heap_frame(mfn_to_page(prev_mfn)))
+ if (is_xen_heap_mfn(prev_mfn))
/* Xen heap frames are simply unhooked from this phys slot. */
guest_physmap_remove_page(d, xatp.gpfn, prev_mfn);
else
uint32_t x, nx, y = page->count_info;
uint32_t cacheattr = pte_flags_to_cacheattr(l1f);
- if ( is_xen_heap_frame(page) )
+ if ( is_xen_heap_page(page) )
{
if ( (l1f & _PAGE_RW) &&
!(unlikely(paging_mode_external(d) &&
page->count_info &= ~PGC_cacheattr_mask;
- BUG_ON(is_xen_heap_frame(page));
+ BUG_ON(is_xen_heap_page(page));
#ifdef __x86_64__
map_pages_to_xen((unsigned long)page_to_virt(page), page_to_mfn(page),
prev_mfn = gmfn_to_mfn(d, xatp.gpfn);
if ( mfn_valid(prev_mfn) )
{
- if ( is_xen_heap_frame(mfn_to_page(prev_mfn)) )
+ if ( is_xen_heap_mfn(prev_mfn) )
/* Xen heap frames are simply unhooked from this phys slot. */
guest_physmap_remove_page(d, xatp.gpfn, prev_mfn);
else
BUG_ON(early_boot);
- if ( is_xen_heap_frame(virt_to_page(v)) )
+ if ( is_xen_heap_page(virt_to_page(v)) )
free_xenheap_page(v);
else
free_domheap_page(virt_to_page(v));
}
page = mfn_to_page(mfn);
- if ( unlikely(is_xen_heap_frame(page)) )
+ if ( unlikely(is_xen_heap_page(page)) )
{
gdprintk(XENLOG_INFO, "gnttab_transfer: xen frame %lx\n",
(unsigned long)gop.mfn);
return free_pages;
}
-#define avail_for_domheap(mfn) \
- (!allocated_in_map(mfn) && !is_xen_heap_frame(mfn_to_page(mfn)))
+#define avail_for_domheap(mfn) !(allocated_in_map(mfn) || is_xen_heap_mfn(mfn))
void __init end_boot_allocator(void)
{
unsigned long i;
/* Re-check page status with lock held. */
if ( !allocated_in_map(mfn) )
{
- if ( is_xen_heap_frame(mfn_to_page(mfn)) )
+ if ( is_xen_heap_mfn(mfn) )
{
p = page_to_virt(mfn_to_page(mfn));
memguard_unguard_range(p, PAGE_SIZE);
* Yuk! Ensure there is a one-page buffer between Xen and Dom zones, to
* prevent merging of power-of-two blocks across the zone boundary.
*/
- if ( ps && !is_xen_heap_frame(maddr_to_page(ps)-1) )
+ if ( ps && !is_xen_heap_mfn(paddr_to_pfn(ps)-1) )
ps += PAGE_SIZE;
- if ( !is_xen_heap_frame(maddr_to_page(pe)) )
+ if ( !is_xen_heap_mfn(paddr_to_pfn(pe)) )
pe -= PAGE_SIZE;
init_heap_pages(MEMZONE_XEN, maddr_to_page(ps), (pe - ps) >> PAGE_SHIFT);
ASSERT(!in_irq());
- if ( unlikely(is_xen_heap_frame(pg)) )
+ if ( unlikely(is_xen_heap_page(pg)) )
{
/* NB. May recursively lock from relinquish_memory(). */
spin_lock_recursive(&d->page_alloc_lock);
/* 29-bit count of references to this frame. */
#define PGC_count_mask ((1UL<<29)-1)
-#define is_xen_heap_frame(pfn) ((page_to_maddr(pfn) < xenheap_phys_end) \
- && (page_to_maddr(pfn) >= xen_pstart))
+#define is_xen_heap_mfn(mfn) (((mfn) < paddr_to_pfn(xenheap_phys_end)) \
+ && ((mfn) >= paddr_to_pfn(xen_pstart)))
+#define is_xen_heap_page(page) is_xen_heap_mfn(page_to_mfn(page))
extern void* xen_pickle_offset;
#define __pickle(a) ((unsigned long)a - (unsigned long)xen_pickle_offset)
/* 29-bit count of references to this frame. */
#define PGC_count_mask ((1UL<<28)-1)
-#define is_xen_heap_frame(pfn) (page_to_maddr(pfn) < xenheap_phys_end)
+#define is_xen_heap_mfn(mfn) ((mfn) < paddr_to_pfn(xenheap_phys_end))
+#define is_xen_heap_page(page) (page_to_maddr(page) < xenheap_phys_end)
static inline struct domain *unpickle_domptr(u32 _domain)
{ return ((_domain == 0) || (_domain & 1)) ? NULL : __va(_domain); }
/* 26-bit count of references to this frame. */
#define PGC_count_mask ((1U<<26)-1)
-#define is_xen_heap_frame(pfn) ({ \
- paddr_t maddr = page_to_maddr(pfn); \
- ((maddr >= xenheap_phys_start) && (maddr < xenheap_phys_end)); \
+#define is_xen_heap_page(page) is_xen_heap_mfn(page_to_mfn(page))
+#define is_xen_heap_mfn(mfn) ({ \
+ unsigned long _mfn = (mfn); \
+ ((_mfn >= paddr_to_pfn(xenheap_phys_start)) && \
+ (_mfn < paddr_to_pfn(xenheap_phys_end))); \
})
#if defined(__i386__)